package main

import (
	"fmt"
	"strconv"
)

func main() {

	//var A uint8 = 1
	//var B uint8 = 2
	//
	//fmt.Println(A - B)

	WriteStr()
	countbyts()
}

/*
答案是（2的8次方）-1 =255，为什么？

首先两个uint相减最终结果肯定也是一个uint的值，

然后1-2=-1 我们可以人为的认为是-1(在程序里面决不会等于-1，因为超范围了)

因为计算机里面计算负数需要将负数的二进制转为补码

因此-1的补码就是11111111,然后将其转十进制就是255

*/

/**
两数之和
*/
func twoSum(nums []int, target int) []int {
	return nums
}

func WriteStr() {
	//var str strings.Builder
	for i := 0; i < 100; i++ {

		fmt.Println(strconv.Itoa(i))

		//str.WriteString("a")
	}
	//fmt.Println(str.String())
}

/**
统计字符串中每个字符出现的次数
*/
func countbyts() {
	/*
		首先：v:=m[str[i]] 当key对应的值不存在时，初始值就是0
		因此就相当于 0++  也就是 0=0+1
	*/
	str := "abdhajdhnfklasjhndfknfksjfjdslkfjms"
	m := make(map[byte]int)
	for i := 0; i < len(str); i++ {
		m[str[i]]++

	}

	for k, v := range m {
		fmt.Printf("%c出现了:%d\n", k, v)
	}

	/*
		稀疏数组

		压缩后的存储结构：
		row  col  value
		6     7     0     这条数据时存原始数组的规模和默认值（到时候恢复的时候使用）
		从这一行开始存具体的值
	*/

}
